package com.ygqh.baby.service;

import com.ygqh.baby.ao.DataStatus;
import com.ygqh.baby.ao.Message;
import com.ygqh.baby.ao.QueryInfo;
import com.ygqh.baby.ao.ResultSet;
import com.ygqh.baby.kids.entity.bo.KidsProductExt;
import com.ygqh.baby.model.AdminSkuSearchReq;
import com.ygqh.baby.model.AdminSkuSearchVo;
import com.ygqh.baby.po.AdminSku;

import java.util.List;

public interface AdminSkuService {

	List<AdminSku> find();

	int findCount();

	AdminSku findById(Long id);

	int deleteSoft(Long[] ids);

	int deleteSoft(Long id);

	int save(AdminSku adminSku);

	int update(AdminSku adminSku);

	int saveOrUpdate(AdminSku adminSku);

	ResultSet<AdminSku> search(QueryInfo queryInfo, String q, Long groupId, String productCode);

	AdminSku findBySkuCode(String skuCode);

	void saveBatch(List<AdminSku> adminSku, int groupCode, String userName, Long groupId);

	List<AdminSku> find(String productCode);

	int updateProduct(String productCode, String status);

	int updateSku(String skuCode, DataStatus status);

	List<AdminSku> find(String q, Long groupId);

	ResultSet<AdminSku> searchByProduct(QueryInfo queryInfo, String productName, String productCode, String skuCode, Long groupId);

	List<AdminSku> selectSuperByProduct(QueryInfo queryInfo, String productName, String productCode, String skuCode, Long groupId);

	List<String> findBySkuCode(List<String> skuCode);

	List<AdminSku> saveBatchSku(List<AdminSku> skuList, String createBy);

	AdminSku selectSkuByName(String groupName, String productName, String color, String sizeName);

	/**
	 * 批量保存adminSku (只是保存操作无任何验证)
	 *
	 * @param adminSkuList
	 * @param updateBy
	 * @return int    返回类型
	 * @throws
	 * @Title: saveSkuBatch
	 * @author （guohao）
	 * @date 2018年5月3日 上午11:19:05
	 * @version V1.0
	 */
	int saveSkuBatch(List<AdminSku> adminSkuList, String updateBy);

	List<String> findProductCodeByGroupId(Long groupId);

	/**
	 * 根据分组Id获取最大的商品编码
	 *
	 * @param groupId
	 * @return
	 */
	Long findMaxProductCode(Long groupId);

	/**
	 * 判断skuCode 是否存在
	 *
	 * @param skuCode
	 * @return
	 */
	AdminSku findOutCodeBySkuCode(String skuCode);

	List<AdminSku> findListBySkuCode(List<String> skuCodeList);

	/**
	 * 商品编码管理列表
	 *
	 * @param searchReq 查询条件
	 * @return
	 * @date 2019-02-27 11:55
	 */
	ResultSet<AdminSkuSearchVo> searchSku(AdminSkuSearchReq searchReq);

	/**
	 * 推送商家编码信息到旺店通货品档案
	 *
	 * @param productCode 商品编码
	 * @return
	 */
	Message pushAdminSkuToWdtGoods(String productCode);

	/**
	 * 根据商品编码获取特定商品信息
	 * （线下店拉取商品所用）
	 *
	 * @param productCode 商品编码
	 * @return
	 * @date 2019/08/19
	 */
	List<KidsProductExt> findProductInfoForKids(String... productCode);

	List<KidsProductExt> findProductDataForKids(String[] skuCodes, String[] productCodes);
}
